package ua.diploma.hibernate.dao;

import java.sql.SQLException;
import java.util.List;

import ua.diploma.hibernate.dto.SecretQuestion;

/**
 * Интерфейс ДАО для работы с таблицей секретных вопросов
 * 
 * @author netstalk3r
 * 
 */
public interface SecretQuestionDAO {

	/**
	 * Добавить секретный вопрос в таблицу
	 * 
	 * @param secretQuestion
	 *            секретный вопрос, который нужно добавить
	 * @throws SQLException
	 *             ошибка работы с бд
	 */
	void addSecretQuestion(SecretQuestion secretQuestion) throws SQLException;

	/**
	 * Обновить секретный вопрос в таблице
	 * 
	 * @param secretQuestion
	 *            секретный вопрос, который нужно обновить
	 * @throws SQLException
	 *             ошибка работы с бд
	 */
	void updateSecretQuestion(SecretQuestion secretQuestion)
			throws SQLException;

	/**
	 * Получить все вопросы
	 * 
	 * @return список всех вопросов
	 * @throws SQLException
	 *             ошибка работы с бд
	 */
	List<SecretQuestion> getAllSecretQuestion() throws SQLException;

	/**
	 * Удалить секретный вопрос из таблицы
	 * 
	 * @param secretQuestion
	 *            вопрос, который нужно удалить
	 * @throws SQLException
	 *             ошибка работы с бд
	 */
	void deleteSecretQuestion(SecretQuestion secretQuestion)
			throws SQLException;

	/**
	 * Получить секетный вопрос по id
	 * 
	 * @param id
	 *            id вопроса, который нужно получить
	 * @return найденный вопрос
	 * @throws SQLException
	 *             ошибка работы с бд
	 */
	SecretQuestion getSecretQuestionById(Integer id) throws SQLException;
}
